/**
 * 认证相关工具函数（静默版）
 *
 * 说明：根据你的需求，移除了所有控制台日志输出，
 * 保留原有认证信息读取与清理逻辑，避免在控制台产生噪声。
 */

import { PERSIST_KEYS } from '@/constants/storage'

/**
 * 检查 token 是否存在于 Redux Persist 缓存中
 * @returns boolean
 */
export const checkTokenInCache = (): boolean => {
  try {
    const persistedData = localStorage.getItem(PERSIST_KEYS.ROOT)
    if (!persistedData) {
      return false
    }

    const parsed = JSON.parse(persistedData)
    const authData = JSON.parse(parsed.auth || '{}')
    const hasToken = !!authData.token
    const isAuthenticated = authData.isAuthenticated

    return hasToken && isAuthenticated
  } catch {
    // 静默失败，返回 false
    return false
  }
}

/**
 * 获取缓存中的认证信息
 * @returns 认证信息对象或 null
 */
export const getCachedAuthInfo = () => {
  try {
    const persistedData = localStorage.getItem(PERSIST_KEYS.ROOT)
    if (!persistedData) return null

    const parsed = JSON.parse(persistedData)
    const authData = JSON.parse(parsed.auth || '{}')

    return {
      isAuthenticated: authData.isAuthenticated,
      token: authData.token,
      refreshToken: authData.refreshToken,
      user: authData.user
    }
  } catch {
    // 静默忽略异常，返回 null
    return null
  }
}

/**
 * 清除所有认证相关的缓存（静默版）
 */
export const clearAuthCache = () => {
  try {
    // 清除 Redux Persist 数据
    localStorage.removeItem(PERSIST_KEYS.ROOT)
    localStorage.removeItem(PERSIST_KEYS.MENU)
  } catch {
    // 静默忽略异常
  }
}

/**
 * 打印当前认证状态（静默版，保留函数占位）
 * 该函数不再输出任何日志，仅保留接口，方便未来需要时扩展为可配置的 verbose 模式
 */
export const debugAuthState = () => {
  if (process.env.NODE_ENV !== 'development') return
  // 保留占位：如需调试时打开日志，可在此处添加可配置的输出
  void checkTokenInCache()
}
